home *** CD-ROM | disk | FTP | other *** search
-
- hlsl("
- #include <common_hlsl.h>
- #include <cardef.h>
-
- sampler2D sColor: register(s0);
- samplerCUBE sDiffuseCubemap: register(s1);
- samplerCUBE sCubemap: register(s2);
- sampler2D sScratch: register(s3);
- // sampler2D sNormalmap: register(s4);
-
- static const float3 FlatNormal = float3(0.0f, 0.0f, 1.0f);
-
- struct PS_INPUT
- {
- HALF2 uvColor : TEXCOORD0;
- float3 E : TEXCOORD1;
- float3x3 tangentSpaceTranspose: TEXCOORD2;
- HALF DamageLevel: TEXCOORD5;
- };
-
- HALF4 main( PS_INPUT input ): COLOR {
-
- // HALF3 Normalmap = tex2D( sNormalmap, input.uvColor )*2-1;
- HALF3 Normalmap = FlatNormal;
-
- HALF3 R = reflect( input.E, Normalmap );
- input.E = normalize( input.E );
-
- HALF3 uvwDiffuseCubemap = mul( -Normalmap, input.tangentSpaceTranspose);
- HALF3 uvwCubemap = mul( R, input.tangentSpaceTranspose);
-
- HALF Diffuse = texCUBE( sDiffuseCubemap, uvwDiffuseCubemap );
- HALF3 Cubemap = texCUBE( sCubemap, uvwCubemap);
- HALF Fresnel = fresnel( Normalmap, input.E, 2)*FRESNELSCALE;
-
- HALF Scratch = tex2D(sScratch, input.uvColor).a * input.DamageLevel;
- HALF4 Color = tex2D( sColor, input.uvColor );
-
- HALF CubemapMask = saturate(Color.a*2-1); //+Scratch;
- // HALF SpecularMask = saturate(Color.a*2);
- CubemapMask = saturate(CubemapMask+Fresnel*CubemapMask*16);
-
-
- Color.rgb = lerp(Color.rgb, SCRATCHCOLOR, Scratch);
- Color.rgb = Color.rgb*Diffuse+Cubemap*CubemapMask;
- return Color;
- }
-
- ")
-